home *** CD-ROM | disk | FTP | other *** search
/ ShareWare OnLine 2 / ShareWare OnLine Volume 2 (CMS Software)(1993).iso / prog / lb09c.zip / GRAPHER.BAS < prev    next >
BASIC Source File  |  1993-02-28  |  5KB  |  155 lines

  1.  
  2.  
  3.   'This is a sample application as described in the chapter
  4.   'Liberty BASIC Graphical Features
  5.  
  6.     'The purpose of this application is to allow the entry of three
  7.     'sets of numerical data and then to plot them in contrasting
  8.     'colors superimposing each other.    The concepts utilized here
  9.     'include handling the spreadsheet, using buttons, and drawing
  10.     'into a graphical window using several colors
  11.  
  12.     'create 3 arrays
  13.     dim columnOne(10)
  14.     dim columnTwo(10)
  15.     dim columnThree(10)
  16.  
  17.     'set up the size of the spreadsheet window
  18.     WindowWidth = 500
  19.     WindowHeight = 348
  20.  
  21.     'set up the buttons
  22.     button #sheet, Graph, [graph], LR, 45, 5
  23.     button #sheet, Quit, [quit], LR, 5, 5
  24.  
  25.     'open the window
  26.     open "GRAPHER, a Liberty BASIC application"  for spreadsheet as #sheet
  27.  
  28.     print #sheet, "indirect"        'use indirect control mode
  29.     print #sheet, "select B4"       'position the selector at B4
  30.  
  31.     'display some simple instructions and also the column headings
  32.     print #sheet, "cell A1 'Please enter 3 columns of data below and click on Graph."
  33.     print #sheet, "cell A3 'Item #     Set 1      Set 2      Set 3"
  34.  
  35.     'place the numbers 1 to 10 to the left of the column information
  36.     for index = 1 to 10
  37.         print #sheet, "cell A"; trim$(str$(index+3)); " '"; str$(index)
  38.     next index
  39.  
  40.     'specify columns B,C,D from 4 to 13 as user (entry) columns and to accept numbers
  41.     for index = 4 to 13
  42.         print #sheet, "user B"; trim$(str$(index)); " number"
  43.         print #sheet, "user C"; trim$(str$(index)); " number"
  44.         print #sheet, "user D"; trim$(str$(index)); " number"
  45.     next index
  46.  
  47.     'display title header and set up the cell to hold it to accept a string
  48.     print #sheet, "cell A15 'Title for the graph:"
  49.     print #sheet, "user A16 string"
  50.  
  51.     'force display of the spreadsheet
  52.     print #sheet, "flush"
  53.  
  54.  
  55. [inputLoop]    ' wait for input (button clicks)
  56.     input r$
  57.     goto [inputLoop]
  58.  
  59.  
  60. [graph]     'display a graph of the data in the spreadsheet
  61.  
  62.     'if a graph is already displayed, then close its window
  63.     if plotFlag > 0 then close #graph
  64.     plotFlag = 1
  65.  
  66.  
  67.     'get the column data from the spreadsheet
  68.     'and look for the peak (greatest) y value
  69.     peak = 0
  70.     for index = 4 to 13
  71.         print #sheet, "result? B"; trim$(str$(index))
  72.         input #sheet, r$ : columnOne(index-3) = val(r$)
  73.         if val(r$) > peak then peak = val(r$)
  74.         print #sheet, "result? C"; trim$(str$(index))
  75.         input #sheet, r$ : columnTwo(index-3) = val(r$)
  76.         if val(r$) > peak then peak = val(r$)
  77.         print #sheet, "result? D"; trim$(str$(index))
  78.         input #sheet, r$ : columnThree(index-3) = val(r$)
  79.         if val(r$) > peak then peak = val(r$)
  80.     next index
  81.  
  82.     'set up the size of the graph window based on peak
  83.     WindowWidth = 320
  84.     WindowHeight = 64 + peak + 20
  85.  
  86.     'get the title of the graph from the spreadsheet
  87.     print #sheet, "result? A16"
  88.     input #sheet, title$
  89.  
  90.     ' open a window for the graph with one button
  91.     button #graph, Done, [done], LR, 5, 5
  92.     open title$ for graphics as #graph
  93.  
  94.     'set the size of the graphics pen
  95.     print #graph, "size 2"
  96.  
  97.     'add ten to peak to move it away from the top of the window
  98.     peak = peak + 10
  99.  
  100.     'plot columnOne in red
  101.     print #graph, "color red"
  102.     print #graph, "up"
  103.     print #graph, "goto 10 "; peak - columnOne(1)
  104.     print #graph, "down"
  105.     for x = 10 to 250 step 25
  106.         print #graph, "goto "; x; " "; peak - columnOne(int((x+15)/25))
  107.     next x
  108.  
  109.     'plot columnTwo in green
  110.     print #graph, "color green"
  111.     print #graph, "up"
  112.     print #graph, "goto 10 "; peak - columnTwo(1)
  113.     print #graph, "down"
  114.     for x = 10 to 250 step 25
  115.         print #graph, "goto "; x; " "; peak - columnTwo(int((x+15)/25))
  116.     next x
  117.  
  118.     'plot columnThree in blue
  119.     print #graph, "color blue"
  120.     print #graph, "up"
  121.     print #graph, "goto 10 "; peak - columnThree(1)
  122.     print #graph, "down"
  123.     for x = 10 to 250 step 25
  124.         print #graph, "goto "; x; " "; peak - columnThree(int((x+15)/25))
  125.     next x
  126.  
  127.     'display the title in black in the upper left corner
  128.     print #graph, "color black"
  129.     print #graph, "up"
  130.     print #graph, "goto 0 12"
  131.     print #graph, "font System 8 20"
  132.     print #graph, "\"; title$
  133.  
  134.     'force display of the graph
  135.     print #graph, "flush"
  136.  
  137.     goto [inputLoop]    ' drawing finished, go back and poll for input
  138.  
  139.  
  140. [done]      'close graph window if Done button is clicked
  141.  
  142.     plotFlag = 0
  143.     close #graph
  144.     goto [inputLoop]
  145.  
  146.  
  147. [quit]      'exit the Grapher application if desired
  148.  
  149.     confirm "Quit Grapher?"; quit$
  150.     if quit$ = "no" then [inputLoop]
  151.     if plotFlag = 1 then close #graph
  152.     close #sheet
  153.  
  154.     end
  155.